package com.coderush.admin.core.common;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.util.ObjectUtils;

public class MyBatisPlusPageUtils {

    /**
     * 安全获取页码（默认为1）
     */
    public static int safePageNum(Integer pageNum) {
        return ObjectUtils.isEmpty(pageNum) || pageNum < 1 ? 1 : pageNum;
    }

    /**
     * 安全获取页大小（默认10，最大500）
     */
    public static int safePageSize(Integer pageSize) {
        int defaultSize = 10;
        int maxSize = 500;
        if (ObjectUtils.isEmpty(pageSize) || pageSize < 1) {
            return defaultSize;
        }
        return Math.min(pageSize, maxSize);
    }

    /**
     * 构建 Page 对象
     */
    public static <T> Page<T> buildPage(int pageNum, int pageSize) {
        return new Page<>(safePageNum(pageNum), safePageSize(pageSize));
    }

    /**
     * 将 MyBatis-Plus 的 IPage 转换为统一的 PageResult
     */
    public static <T> PageResult<T> toPageResult(IPage<T> iPage) {
        return new PageResult<>(
                iPage.getTotal(),
                (int) iPage.getCurrent(),
                (int) iPage.getSize(),
                iPage.getRecords()
        );
    }
}